# 사용할 패키지 추가
library(ggplot2)
library(tidyr)
library(dplyr)
library(ggthemes)
library(ggmap)# 데이터파일 읽기
metro<-read.csv("metro.csv")
str(metro)## 'data.frame': 16500 obs. of 30 variables:
## $ X : int 1 2 3 4 5 6 7 8 9 10 ...
## $ 날짜 : chr "2019-11-01" "2019-11-01" "2019-11-01" "2019-11-01" ...
## $ 호선 : chr "1호선" "1호선" "1호선" "1호선" ...
## $ 역번호 : int 150 150 151 151 152 152 153 153 154 154 ...
## $ 역명 : chr "서울역" "서울역" "시청" "시청" ...
## $ 구분 : chr "승차" "하차" "승차" "하차" ...
## $ X04...05: int 32 2 3 0 5 0 11 1 2 0 ...
## $ X05...06: int 438 353 89 182 143 211 187 127 83 175 ...
## $ X06...07: int 529 2019 152 852 161 1078 154 477 115 622 ...
## $ X07...08: int 1612 4520 289 2926 288 4395 302 1044 219 1817 ...
## $ X08...09: int 3405 9906 435 9348 482 13000 386 3662 366 5234 ...
## $ X09...10: int 2360 6525 481 4124 631 6669 550 3510 494 3292 ...
## $ X10...11: int 2377 3571 716 2064 768 2964 841 2593 843 2292 ...
## $ X11...12: int 2853 2951 1090 1889 1359 2501 1686 2813 1262 2349 ...
## $ X12...13: int 3334 3190 1073 1538 1531 2127 1781 2646 1583 2160 ...
## $ X13...14: int 3545 3348 1367 1751 1937 2108 2059 2718 1868 2159 ...
## $ X14...15: int 2850 3179 1782 1403 2466 1926 2405 2579 2303 2071 ...
## $ X15...16: int 4606 3265 2235 1431 2821 1718 3125 2103 2479 1559 ...
## $ X16...17: int 4915 3575 2345 1218 3403 1778 3241 2010 2656 1777 ...
## $ X17...18: int 7472 4191 3627 1249 5807 2396 3796 2033 3583 1599 ...
## $ X18...19: int 11107 5445 7462 1486 10738 3746 4836 2582 5246 1776 ...
## $ X19...20: int 5754 3882 2943 816 4680 2557 3192 1682 2709 1261 ...
## $ X20...21: int 3920 2596 2249 439 3670 935 2107 675 1782 548 ...
## $ X21...22: int 3799 2177 2199 288 4495 510 2452 512 1565 341 ...
## $ X22...23: int 3369 1624 1460 296 4118 384 2407 380 1094 260 ...
## $ X23...24: int 1678 912 640 202 2366 299 1394 323 596 153 ...
## $ X00...01: int 228 478 62 47 271 75 236 143 66 73 ...
## $ X01...02: int 2 39 0 1 1 0 6 10 1 1 ...
## $ X02...03: int 0 0 0 0 0 0 0 0 0 0 ...
## $ X03...04: int 0 0 0 0 0 0 0 0 0 0 ...
# 텍스트 형태의 날짜를 Date 객체로 변환
metro$날짜 <- as.Date(metro$날짜)
str(metro)## 'data.frame': 16500 obs. of 30 variables:
## $ X : int 1 2 3 4 5 6 7 8 9 10 ...
## $ 날짜 : Date, format: "2019-11-01" "2019-11-01" ...
## $ 호선 : chr "1호선" "1호선" "1호선" "1호선" ...
## $ 역번호 : int 150 150 151 151 152 152 153 153 154 154 ...
## $ 역명 : chr "서울역" "서울역" "시청" "시청" ...
## $ 구분 : chr "승차" "하차" "승차" "하차" ...
## $ X04...05: int 32 2 3 0 5 0 11 1 2 0 ...
## $ X05...06: int 438 353 89 182 143 211 187 127 83 175 ...
## $ X06...07: int 529 2019 152 852 161 1078 154 477 115 622 ...
## $ X07...08: int 1612 4520 289 2926 288 4395 302 1044 219 1817 ...
## $ X08...09: int 3405 9906 435 9348 482 13000 386 3662 366 5234 ...
## $ X09...10: int 2360 6525 481 4124 631 6669 550 3510 494 3292 ...
## $ X10...11: int 2377 3571 716 2064 768 2964 841 2593 843 2292 ...
## $ X11...12: int 2853 2951 1090 1889 1359 2501 1686 2813 1262 2349 ...
## $ X12...13: int 3334 3190 1073 1538 1531 2127 1781 2646 1583 2160 ...
## $ X13...14: int 3545 3348 1367 1751 1937 2108 2059 2718 1868 2159 ...
## $ X14...15: int 2850 3179 1782 1403 2466 1926 2405 2579 2303 2071 ...
## $ X15...16: int 4606 3265 2235 1431 2821 1718 3125 2103 2479 1559 ...
## $ X16...17: int 4915 3575 2345 1218 3403 1778 3241 2010 2656 1777 ...
## $ X17...18: int 7472 4191 3627 1249 5807 2396 3796 2033 3583 1599 ...
## $ X18...19: int 11107 5445 7462 1486 10738 3746 4836 2582 5246 1776 ...
## $ X19...20: int 5754 3882 2943 816 4680 2557 3192 1682 2709 1261 ...
## $ X20...21: int 3920 2596 2249 439 3670 935 2107 675 1782 548 ...
## $ X21...22: int 3799 2177 2199 288 4495 510 2452 512 1565 341 ...
## $ X22...23: int 3369 1624 1460 296 4118 384 2407 380 1094 260 ...
## $ X23...24: int 1678 912 640 202 2366 299 1394 323 596 153 ...
## $ X00...01: int 228 478 62 47 271 75 236 143 66 73 ...
## $ X01...02: int 2 39 0 1 1 0 6 10 1 1 ...
## $ X02...03: int 0 0 0 0 0 0 0 0 0 0 ...
## $ X03...04: int 0 0 0 0 0 0 0 0 0 0 ...
# 2019년 11월 1일의 숭실대입구역 데이터만 추출
metro_a1 <- subset(metro,역명=="숭실대입구(살피재)"&날짜=="2019-11-01")
str(metro_a1)## 'data.frame': 2 obs. of 30 variables:
## $ X : int 473 474
## $ 날짜 : Date, format: "2019-11-01" "2019-11-01"
## $ 호선 : chr "7호선" "7호선"
## $ 역번호 : int 2740 2740
## $ 역명 : chr "숭실대입구(살피재)" "숭실대입구(살피재)"
## $ 구분 : chr "승차" "하차"
## $ X04...05: int 3 0
## $ X05...06: int 237 31
## $ X06...07: int 498 314
## $ X07...08: int 1875 400
## $ X08...09: int 2637 1510
## $ X09...10: int 1380 1010
## $ X10...11: int 752 1163
## $ X11...12: int 747 973
## $ X12...13: int 723 726
## $ X13...14: int 846 716
## $ X14...15: int 998 938
## $ X15...16: int 1030 814
## $ X16...17: int 1439 1050
## $ X17...18: int 1715 1245
## $ X18...19: int 1390 2027
## $ X19...20: int 876 1676
## $ X20...21: int 615 987
## $ X21...22: int 579 937
## $ X22...23: int 500 925
## $ X23...24: int 354 715
## $ X00...01: int 77 373
## $ X01...02: int 0 0
## $ X02...03: int 0 0
## $ X03...04: int 0 0
#gather을 이용해 여러 시간대와 인원수를 하나의 변수로 바꿈
metro_a1 <- gather(metro_a1, key="time",value="count",X04...05:X03...04)
str(metro_a1)## 'data.frame': 48 obs. of 8 variables:
## $ X : int 473 474 473 474 473 474 473 474 473 474 ...
## $ 날짜 : Date, format: "2019-11-01" "2019-11-01" ...
## $ 호선 : chr "7호선" "7호선" "7호선" "7호선" ...
## $ 역번호: int 2740 2740 2740 2740 2740 2740 2740 2740 2740 2740 ...
## $ 역명 : chr "숭실대입구(살피재)" "숭실대입구(살피재)" "숭실대입구(살피재)" "숭실대입구(살피재)" ...
## $ 구분 : chr "승차" "하차" "승차" "하차" ...
## $ time : chr "X04...05" "X04...05" "X05...06" "X05...06" ...
## $ count : int 3 0 237 31 498 314 1875 400 2637 1510 ...
#그래프 그리기
ggplot(metro_a1, aes(x=time, y=count, fill=구분)) + geom_bar(stat='identity',position = position_dodge(preserve = "single")) + theme_minimal() + labs(x="시간대", y="인원 수", title="2019년 11월 1일 숭실대입구역 시간대별 승차 및 하차 인원 수") + theme(axis.text.x = element_text(angle = 45,
hjust = 1))
# 2019년 11월 4일부터 10일까지 숭실대입구역 데이터 추출
metro_a2 <- subset(metro,역명=="숭실대입구(살피재)"&날짜>="2019-11-04"&날짜<="2019-11-10")
str(metro_a2)## 'data.frame': 14 obs. of 30 variables:
## $ X : int 2123 2124 2673 2674 3223 3224 3773 3774 4323 4324 ...
## $ 날짜 : Date, format: "2019-11-04" "2019-11-04" ...
## $ 호선 : chr "7호선" "7호선" "7호선" "7호선" ...
## $ 역번호 : int 2740 2740 2740 2740 2740 2740 2740 2740 2740 2740 ...
## $ 역명 : chr "숭실대입구(살피재)" "숭실대입구(살피재)" "숭실대입구(살피재)" "숭실대입구(살피재)" ...
## $ 구분 : chr "승차" "하차" "승차" "하차" ...
## $ X04...05: int 1 0 2 0 0 0 2 0 3 0 ...
## $ X05...06: int 252 35 236 28 250 31 239 30 239 32 ...
## $ X06...07: int 585 242 546 202 522 216 555 174 481 192 ...
## $ X07...08: int 2106 387 2005 423 2002 445 1988 407 1925 371 ...
## $ X08...09: int 2686 1969 2838 1908 2767 2108 2746 1649 2703 1509 ...
## $ X09...10: int 1321 1271 1392 1193 1480 1084 1405 1088 1384 1128 ...
## $ X10...11: int 733 1738 764 1815 747 1761 804 1536 788 1229 ...
## $ X11...12: int 656 1104 759 1073 660 1132 740 1115 707 934 ...
## $ X12...13: int 650 787 652 778 635 706 648 709 734 753 ...
## $ X13...14: int 767 922 793 986 784 870 823 957 938 776 ...
## $ X14...15: int 836 843 856 796 874 887 942 803 863 984 ...
## $ X15...16: int 849 755 887 812 746 801 873 768 910 847 ...
## $ X16...17: int 1467 896 1525 963 1561 1004 1425 1008 1549 1009 ...
## $ X17...18: int 1660 1183 1593 1298 1623 1295 1454 1166 1720 1403 ...
## $ X18...19: int 1361 2399 1348 2085 1425 2336 1244 2089 1498 2086 ...
## $ X19...20: int 847 1919 920 1897 804 1842 820 1870 831 1745 ...
## $ X20...21: int 732 1022 705 1020 791 968 712 1050 709 1001 ...
## $ X21...22: int 1005 860 919 964 924 886 899 971 649 842 ...
## $ X22...23: int 724 861 703 892 715 881 592 935 583 957 ...
## $ X23...24: int 353 488 431 509 453 586 454 672 375 630 ...
## $ X00...01: int 92 212 72 217 115 272 85 256 73 406 ...
## $ X01...02: int 0 0 0 0 0 0 0 0 0 0 ...
## $ X02...03: int 0 0 0 0 0 0 0 0 0 0 ...
## $ X03...04: int 0 0 0 0 0 0 0 0 0 0 ...
#gather을 이용해 여러 시간대와 인원수를 하나의 변수로 바꿈
metro_a2 <- gather(metro_a2, key="time",value="count",X04...05:X03...04)
str(metro_a2)## 'data.frame': 336 obs. of 8 variables:
## $ X : int 2123 2124 2673 2674 3223 3224 3773 3774 4323 4324 ...
## $ 날짜 : Date, format: "2019-11-04" "2019-11-04" ...
## $ 호선 : chr "7호선" "7호선" "7호선" "7호선" ...
## $ 역번호: int 2740 2740 2740 2740 2740 2740 2740 2740 2740 2740 ...
## $ 역명 : chr "숭실대입구(살피재)" "숭실대입구(살피재)" "숭실대입구(살피재)" "숭실대입구(살피재)" ...
## $ 구분 : chr "승차" "하차" "승차" "하차" ...
## $ time : chr "X04...05" "X04...05" "X04...05" "X04...05" ...
## $ count : int 1 0 2 0 0 0 2 0 3 0 ...
# 승차,하차 데이터 추출
metro_a2_s <- subset(metro_a2, 구분=="승차")
str(metro_a2_s)## 'data.frame': 168 obs. of 8 variables:
## $ X : int 2123 2673 3223 3773 4323 4873 5423 2123 2673 3223 ...
## $ 날짜 : Date, format: "2019-11-04" "2019-11-05" ...
## $ 호선 : chr "7호선" "7호선" "7호선" "7호선" ...
## $ 역번호: int 2740 2740 2740 2740 2740 2740 2740 2740 2740 2740 ...
## $ 역명 : chr "숭실대입구(살피재)" "숭실대입구(살피재)" "숭실대입구(살피재)" "숭실대입구(살피재)" ...
## $ 구분 : chr "승차" "승차" "승차" "승차" ...
## $ time : chr "X04...05" "X04...05" "X04...05" "X04...05" ...
## $ count : int 1 2 0 2 3 3 0 252 236 250 ...
metro_a2_h <- subset(metro_a2, 구분=="하차")
str(metro_a2_h)## 'data.frame': 168 obs. of 8 variables:
## $ X : int 2124 2674 3224 3774 4324 4874 5424 2124 2674 3224 ...
## $ 날짜 : Date, format: "2019-11-04" "2019-11-05" ...
## $ 호선 : chr "7호선" "7호선" "7호선" "7호선" ...
## $ 역번호: int 2740 2740 2740 2740 2740 2740 2740 2740 2740 2740 ...
## $ 역명 : chr "숭실대입구(살피재)" "숭실대입구(살피재)" "숭실대입구(살피재)" "숭실대입구(살피재)" ...
## $ 구분 : chr "하차" "하차" "하차" "하차" ...
## $ time : chr "X04...05" "X04...05" "X04...05" "X04...05" ...
## $ count : int 0 0 0 0 0 0 0 35 28 31 ...
# 각 요일별 시간대별 승차인원과 하차인원의 분포를 각각 heat map 그리기
ggplot(metro_a2_s,aes(x=날짜, y=time, fill=count)) + geom_tile() + theme_minimal() + labs(x="날짜",y="시간대",title="2019년 11월 4일부터 2019년 11월 10일까지 일주일간 각 요일별 시간대별 승차인원") + scale_x_date(breaks="1 day")ggplot(metro_a2_h,aes(x=날짜, y=time, fill=count)) + geom_tile() + theme_minimal() + labs(x="날짜",y="시간대",title="2019년 11월 4일부터 2019년 11월 10일까지 일주일간 각 요일별 시간대별 하차인원") + scale_x_date(breaks = "1 day")# 7호선 데이터 추출
metro_a3 <- subset(metro,호선=="7호선")
str(metro_a3)## 'data.frame': 3060 obs. of 30 variables:
## $ X : int 415 416 417 418 419 420 421 422 423 424 ...
## $ 날짜 : Date, format: "2019-11-01" "2019-11-01" ...
## $ 호선 : chr "7호선" "7호선" "7호선" "7호선" ...
## $ 역번호 : int 2711 2711 2712 2712 2713 2713 2714 2714 2715 2715 ...
## $ 역명 : chr "장암" "장암" "도봉산" "도봉산" ...
## $ 구분 : chr "승차" "하차" "승차" "하차" ...
## $ X04...05: int 0 0 2 0 0 0 0 0 0 0 ...
## $ X05...06: int 61 3 175 24 355 27 366 59 302 71 ...
## $ X06...07: int 280 70 698 188 901 210 895 193 659 276 ...
## $ X07...08: int 835 48 2587 286 2495 340 2846 397 1772 883 ...
## $ X08...09: int 552 53 1874 654 2304 718 2843 478 1788 1932 ...
## $ X09...10: int 162 44 908 627 1195 624 1189 411 1157 1806 ...
## $ X10...11: int 115 54 485 608 753 541 753 331 1071 1315 ...
## $ X11...12: int 78 45 393 377 610 544 680 374 1161 1038 ...
## $ X12...13: int 62 47 404 435 696 516 800 538 1249 1195 ...
## $ X13...14: int 83 43 474 445 671 538 686 481 1228 1433 ...
## $ X14...15: int 95 48 464 517 654 507 566 643 1288 1370 ...
## $ X15...16: int 76 33 517 568 633 712 637 686 1654 1594 ...
## $ X16...17: int 114 51 691 622 741 913 586 924 1600 1717 ...
## $ X17...18: int 163 60 673 874 939 1098 685 1031 1765 1945 ...
## $ X18...19: int 152 112 566 1305 911 1664 575 1609 2004 3009 ...
## $ X19...20: int 89 137 291 1895 528 2009 373 1854 1253 2786 ...
## $ X20...21: int 72 89 186 986 332 1080 259 1191 1235 1392 ...
## $ X21...22: int 34 46 149 839 274 1013 187 801 1123 1005 ...
## $ X22...23: int 21 45 95 884 207 938 151 902 1186 855 ...
## $ X23...24: int 13 29 28 676 119 742 89 619 591 717 ...
## $ X00...01: int 2 14 7 455 20 362 18 340 150 357 ...
## $ X01...02: int 0 0 0 70 0 46 0 0 0 9 ...
## $ X02...03: int 0 0 0 0 0 0 0 0 0 0 ...
## $ X03...04: int 0 0 0 0 0 0 0 0 0 0 ...
#gather을 이용해 여러 시간대와 인원수를 하나의 변수로 바꿈
metro_a3 <- gather(metro_a3,key="time", value="count",X04...05:X03...04)
str(metro_a3)## 'data.frame': 73440 obs. of 8 variables:
## $ X : int 415 416 417 418 419 420 421 422 423 424 ...
## $ 날짜 : Date, format: "2019-11-01" "2019-11-01" ...
## $ 호선 : chr "7호선" "7호선" "7호선" "7호선" ...
## $ 역번호: int 2711 2711 2712 2712 2713 2713 2714 2714 2715 2715 ...
## $ 역명 : chr "장암" "장암" "도봉산" "도봉산" ...
## $ 구분 : chr "승차" "하차" "승차" "하차" ...
## $ time : chr "X04...05" "X04...05" "X04...05" "X04...05" ...
## $ count : int 0 0 2 0 0 0 0 0 0 0 ...
# 역명과 count 열 데이터 추출
metro_a3 <- metro_a3[,c(5,8)]
str(metro_a3)## 'data.frame': 73440 obs. of 2 variables:
## $ 역명 : chr "장암" "장암" "도봉산" "도봉산" ...
## $ count: int 0 0 2 0 0 0 0 0 0 0 ...
# 각 역 유동인구수 총합 구하기,aggregate() 함수 사용
metro_a3 <- aggregate(x=metro_a3[-1], by=list(metro_a3$역명), sum)
str(metro_a3)## 'data.frame': 51 obs. of 2 variables:
## $ Group.1: chr "가산디지털단지" "강남구청" "건대입구" "고속터미널" ...
## $ count : int 2467681 1005604 1063609 1231777 846742 1572786 825795 601076 465364 1012929 ...
# 유동인구수가 많은 상위 20개역을 추출하기 위해
# dplyr 패키지의 arrange() 함수 사용
# 상위 20개 역 데이터를 추출
metro_a3_ordered <- arrange(metro_a3, -count)
str(metro_a3_ordered)## 'data.frame': 51 obs. of 2 variables:
## $ Group.1: chr "가산디지털단지" "광명사거리" "철산" "학동" ...
## $ count : int 2467681 1572786 1495127 1404699 1349957 1313487 1238686 1231777 1228682 1078534 ...
metro_a3 <- metro_a3_ordered[1:20,]
str(metro_a3)## 'data.frame': 20 obs. of 2 variables:
## $ Group.1: chr "가산디지털단지" "광명사거리" "철산" "학동" ...
## $ count : int 2467681 1572786 1495127 1404699 1349957 1313487 1238686 1231777 1228682 1078534 ...
# 그래프 그리기
ggplot(metro_a3, aes(x=reorder(Group.1, count),y=count)) + geom_bar(stat="identity") + coord_flip()# 7호선 역 위도,경도 데이터 읽기
metro_coord <- read.csv("metro_coord.csv")
str(metro_coord)## 'data.frame': 51 obs. of 6 variables:
## $ X : int 1 2 3 4 5 6 7 8 9 10 ...
## $ 역번호: int 2748 2732 2729 2736 2718 2750 2727 2760 2753 2747 ...
## $ 역명 : chr "가산디지털단지" "강남구청" "건대입구" "고속터미널" ...
## $ 호선 : int 7 7 7 7 7 7 7 7 7 7 ...
## $ lat : num 37.5 37.5 37.5 37.5 37.6 ...
## $ lon : num 127 127 127 127 127 ...
#7호선 데이터 추출
metro_a4 <- subset(metro,호선=="7호선")
str(metro_a4)## 'data.frame': 3060 obs. of 30 variables:
## $ X : int 415 416 417 418 419 420 421 422 423 424 ...
## $ 날짜 : Date, format: "2019-11-01" "2019-11-01" ...
## $ 호선 : chr "7호선" "7호선" "7호선" "7호선" ...
## $ 역번호 : int 2711 2711 2712 2712 2713 2713 2714 2714 2715 2715 ...
## $ 역명 : chr "장암" "장암" "도봉산" "도봉산" ...
## $ 구분 : chr "승차" "하차" "승차" "하차" ...
## $ X04...05: int 0 0 2 0 0 0 0 0 0 0 ...
## $ X05...06: int 61 3 175 24 355 27 366 59 302 71 ...
## $ X06...07: int 280 70 698 188 901 210 895 193 659 276 ...
## $ X07...08: int 835 48 2587 286 2495 340 2846 397 1772 883 ...
## $ X08...09: int 552 53 1874 654 2304 718 2843 478 1788 1932 ...
## $ X09...10: int 162 44 908 627 1195 624 1189 411 1157 1806 ...
## $ X10...11: int 115 54 485 608 753 541 753 331 1071 1315 ...
## $ X11...12: int 78 45 393 377 610 544 680 374 1161 1038 ...
## $ X12...13: int 62 47 404 435 696 516 800 538 1249 1195 ...
## $ X13...14: int 83 43 474 445 671 538 686 481 1228 1433 ...
## $ X14...15: int 95 48 464 517 654 507 566 643 1288 1370 ...
## $ X15...16: int 76 33 517 568 633 712 637 686 1654 1594 ...
## $ X16...17: int 114 51 691 622 741 913 586 924 1600 1717 ...
## $ X17...18: int 163 60 673 874 939 1098 685 1031 1765 1945 ...
## $ X18...19: int 152 112 566 1305 911 1664 575 1609 2004 3009 ...
## $ X19...20: int 89 137 291 1895 528 2009 373 1854 1253 2786 ...
## $ X20...21: int 72 89 186 986 332 1080 259 1191 1235 1392 ...
## $ X21...22: int 34 46 149 839 274 1013 187 801 1123 1005 ...
## $ X22...23: int 21 45 95 884 207 938 151 902 1186 855 ...
## $ X23...24: int 13 29 28 676 119 742 89 619 591 717 ...
## $ X00...01: int 2 14 7 455 20 362 18 340 150 357 ...
## $ X01...02: int 0 0 0 70 0 46 0 0 0 9 ...
## $ X02...03: int 0 0 0 0 0 0 0 0 0 0 ...
## $ X03...04: int 0 0 0 0 0 0 0 0 0 0 ...
#gather을 이용해 여러 시간대와 인원수를 하나의 변수로 바꿈
metro_a4 <- gather(metro_a4, key="time",value="count",X04...05:X03...04)
str(metro_a4)## 'data.frame': 73440 obs. of 8 variables:
## $ X : int 415 416 417 418 419 420 421 422 423 424 ...
## $ 날짜 : Date, format: "2019-11-01" "2019-11-01" ...
## $ 호선 : chr "7호선" "7호선" "7호선" "7호선" ...
## $ 역번호: int 2711 2711 2712 2712 2713 2713 2714 2714 2715 2715 ...
## $ 역명 : chr "장암" "장암" "도봉산" "도봉산" ...
## $ 구분 : chr "승차" "하차" "승차" "하차" ...
## $ time : chr "X04...05" "X04...05" "X04...05" "X04...05" ...
## $ count : int 0 0 2 0 0 0 0 0 0 0 ...
# 역명과 count 열 데이터 추출
metro_a4 <- metro_a4[,c(5,8)]
str(metro_a4)## 'data.frame': 73440 obs. of 2 variables:
## $ 역명 : chr "장암" "장암" "도봉산" "도봉산" ...
## $ count: int 0 0 2 0 0 0 0 0 0 0 ...
# aggregate() 함수 사용
metro_a4 <- aggregate(x=metro_a4[-1], by=list(metro_a4$역명), sum)
str(metro_a4)## 'data.frame': 51 obs. of 2 variables:
## $ Group.1: chr "가산디지털단지" "강남구청" "건대입구" "고속터미널" ...
## $ count : int 2467681 1005604 1063609 1231777 846742 1572786 825795 601076 465364 1012929 ...
# 7호선 역의 최대,최소 latitude and logitude
min(metro_coord$lon)## [1] 126.7205
max(metro_coord$lon)## [1] 127.0885
min(metro_coord$lat)## [1] 37.47605
max(metro_coord$lat)## [1] 37.70011
#latitude and logitude
bbox <- c(left = 126.6, bottom=37.4, right=127.1, top=37.8)
# get 7호선 map
station <- get_stamenmap(bbox, zoom=10, maptype="terrain")## Source : http://tile.stamen.com/terrain/10/872/395.png
## Source : http://tile.stamen.com/terrain/10/873/395.png
## Source : http://tile.stamen.com/terrain/10/872/396.png
## Source : http://tile.stamen.com/terrain/10/873/396.png
## Source : http://tile.stamen.com/terrain/10/872/397.png
## Source : http://tile.stamen.com/terrain/10/873/397.png
ggmap(station)#열이름 변경
metro_a4 <-rename(metro_a4,"역명"="Group.1")
str(metro_a4)## 'data.frame': 51 obs. of 2 variables:
## $ 역명 : chr "가산디지털단지" "강남구청" "건대입구" "고속터미널" ...
## $ count: int 2467681 1005604 1063609 1231777 846742 1572786 825795 601076 465364 1012929 ...
#데이터 셋 병합
aa <- merge(metro_coord,metro_a4,by='역명')
str(aa)## 'data.frame': 51 obs. of 7 variables:
## $ 역명 : chr "가산디지털단지" "강남구청" "건대입구" "고속터미널" ...
## $ X : int 1 2 3 4 5 6 7 8 9 10 ...
## $ 역번호: int 2748 2732 2729 2736 2718 2750 2727 2760 2753 2747 ...
## $ 호선 : int 7 7 7 7 7 7 7 7 7 7 ...
## $ lat : num 37.5 37.5 37.5 37.5 37.6 ...
## $ lon : num 127 127 127 127 127 ...
## $ count : int 2467681 1005604 1063609 1231777 846742 1572786 825795 601076 465364 1012929 ...
# 그래프 그리기(크기)
ggmap(station, base_layer = ggplot(data=aa, aes(x=lon, y=lat, size=count))) + geom_point(color="blue",alpha=.4) + theme_void() + labs(title="2019년 11월 7호선 모든 역 유동인구 분포", size="유동인구")# 그래프 그리기(투명도)
ggmap(station, base_layer = ggplot(data=aa, aes(x=lon, y=lat, alpha=count))) + geom_point(color="blue",size=3) + theme_void() + labs(title="2019년 11월 7호선 모든 역 유동인구 분포", alpha="유동인구")